from flask import session
from .models import *


# 用户初始为0级，最高为6级
# 零级到一级需要10点经验（基本就是提供一个反馈）
# 一级到二级需要500点经验
# 二级到三级需要3000点经验
# 三级到四级需要10000点经验
# 四级到五级需要30000点经验
# 五级到六级需要66666点经验
# （用户升级不扣除经验，经验到了自动升级）

# 积分的获得：
# 每日打卡能获得2点积分，
# 每日第一次发动态&问题可以获得1点积分，
# 每日第一次回答问题能获得1点积分，
# 如果回答被进一步采纳，能获得3点积分。


# 等级的判定
def get_level(exp):
    if exp < 10:
        return 0
    elif exp < 500:
        return 1
    elif exp < 3000:
        return 2
    elif exp < 10000:
        return 3
    elif exp < 30000:
        return 4
    elif exp < 66666:
        return 5
    else:
        return 6


# 每获得一点积分就能使用户的经验上升,并且对等级进行判定
def get_exp(user_id, num):
    user = Users.query.filter_by(user_id=user_id).first()
    user.user_fraction += num
    user.user_upgrade = user.user_upgrade + num*5
    grade = get_level(user.user_upgrade)
    if user.user_grade != grade:
        user.user_grade = grade
    db.session.commit()


# 每日打卡能获得2点积分
def get_card_exp(user_id):
    get_exp(user_id, 2)


# 每日第一次发动态&问题可以获得1点积分
def get_dynamic_exp(user_id):
    get_exp(user_id, 1)


# 每日第一次回答问题能获得1点积分
def get_answer_exp(user_id):
    get_exp(user_id, 1)


# 如果回答被进一步采纳，能获得3点积分
def get_adopt_exp(user_id):
    get_exp(user_id, 3)
